Imports System.Data.OleDb

Module Funzioni

    Public Function Apostrophe(ByVal sFieldString As String) As String
        ' funzione che restituisce una stringa eliminando il problema dell'apice
        Return sFieldString.Replace("'", "''")
    End Function

    Public Function GetNumero(ByVal nometabella As String, Optional ByVal nome As String = "", Optional ByVal trovaDaNome As Boolean = True) As Integer
        ' ritorna il primo key libero nella tabella NomeTabella (trovaDaNome=false)
        ' ritorna il key di un record (trovaDaNome=true)
        Dim trovato As Boolean
        Dim cnDb As New OleDbConnection(strConnessioneClienti)
        Dim daDb As OleDbDataAdapter
        Dim rsDataset As New DataSet


        If trovaDaNome = False Then
            daDb = New OleDbDataAdapter("SELECT * FROM " & nometabella, cnDb)
            daDb.Fill(rsDataset, nometabella)
            cnDb.Close()
            ' per velocizzare la ricerca a costo di perdere qualche numero < 1000
            If rsDataset.Tables(nometabella).Rows.Count > 500 And rsDataset.Tables(nometabella).Rows.Count < 1000 Then
                GetNumero = 500
            ElseIf rsDataset.Tables(nometabella).Rows.Count > 1000 Then
                GetNumero = rsDataset.Tables(nometabella).Rows.Count
            Else
                GetNumero = 0
            End If
            'GetNumero = 0
            Do
                GetNumero = GetNumero + 1
                rsDataset.Tables(nometabella).DefaultView.RowFilter = "KEY_ID=" & GetNumero
                If rsDataset.Tables(nometabella).DefaultView.Count <> 0 Then
                    trovato = True
                Else
                    trovato = False
                End If
            Loop Until trovato = False
        Else
            daDb = New OleDbDataAdapter("SELECT * FROM " & nometabella & " WHERE NOME='" & Apostrophe(nome) & "'", cnDb)
            daDb.Fill(rsDataset, nometabella)
            cnDb.Close()
            If rsDataset.Tables(nometabella).Rows.Count = 0 Then
                ' nn lo ha trovato
                GetNumero = -1
            Else
                GetNumero = CInt(rsDataset.Tables(nometabella).Rows(0).Item("KEY_ID").Value)
            End If
        End If
    End Function

    Public Function VirgolaOrPunto(ByVal num As String, ByVal chrCosaSostituire As String) As String
        ' sostituisce il chrCosaSostituire in num e lo sostituisce con chrSostituto
        On Error GoTo gestione
        Dim chrSostituto As String
        Dim pos As Integer

        chrSostituto = IIf(chrCosaSostituire = ",", ".", ",")
        pos = InStr(1, num, chrCosaSostituire)
        If pos <> 0 Then Mid(num, pos, 1) = chrSostituto
        Return num

        Exit Function
gestione:
        Return num
    End Function

End Module
